<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class M_Usuario extends Modelo {

    public $id = null;
    public $tipoId;
    public $estudioId = null;
    public $usuario;
    public $contrasenia;
    public $nombre;
    public $apellido;
    public $celular;
    public $telefono;
    public $direccion;
    public $estado;
    public $email;

    function __construct() {
        parent::__construct();
        $this->tabla = 'usuarios';
    }

    function setAttributes($datos = array(), $tipo = 'object') {
        return parent::_setAttributes(__CLASS__, $datos, $tipo);
    }

    function doArray() {
        return parent::_doArray(__CLASS__);
    }

    /**
     * Devuelve los datos de un usuario en un arreglo.
     * 
     * @param string $username Nombre de usuario a validar
     * @param string $password Password a validar
     * @return array Arreglo con los datos del usuario (no todos los campos de la tabla)
     */
    public function getUsuarioPorUsuarioContacsenia($usuario, $contrasenia) {
        $this->db->select("*");
        $this->db->from($this->tabla);
        $this->db->where(array(
            'usuario' => $usuario,
            'contrasenia' => $contrasenia,
        ));
        $results = $this->db->get();
        $usuario = $results->result_array();

        if (isset($usuario[0])) {
            return $usuario[0];
        } else {
            return false;
        }
    }

    /**
     * Devuelve valores por defecto en un arreglo.
     */
    function getValidacion($edit = false) {
        if ($edit) {
            $valid = array(
                array('field' => 'nombre', 'label' => 'Nombre', 'rules' => 'trim|required'),
                array('field' => 'apellido', 'label' => 'Apellido', 'rules' => 'trim|required'),
                array('field' => 'contrasenia', 'label' => 'Contrase&ntilde;a', 'rules' => 'trim'),
                array('field' => 'email', 'label' => 'Email', 'rules' => 'trim|required|valid_email'),
            );
        } else {
            $valid = array(
                array('field' => 'tipoId', 'label' => 'Tipo de Usuario', 'rules' => 'trim|required'),
                array('field' => 'estudioId', 'label' => 'Tipo de Usuario', 'rules' => 'trim|callback__estudio_check'),
                array('field' => 'nombre', 'label' => 'Nombre', 'rules' => 'trim|required'),
                array('field' => 'apellido', 'label' => 'Apellido', 'rules' => 'trim|required'),
                array('field' => 'usuario', 'label' => 'Nombre de Usuario', 'rules' => 'trim|required|min_length[5]|max_length[15]||is_unique[usuarios.usuario]'),
                array('field' => 'contrasenia', 'label' => 'Contrase&ntilde;a', 'rules' => 'trim|required'),
                array('field' => 'email', 'label' => 'Email', 'rules' => 'trim|required|valid_email'),
            );
        }
        return $valid;
    }

    /**
     * Devuelve valores por defecto en un arreglo.
     */
    function valoresPorDefecto() {
        return array(
            'tipoId' => '',
            'estudioId' => '',
            'apellido' => '',
            'nombre' => '',
            'usuario' => '',
            'contrasenia' => '',
            'telefono' => '',
            'celular' => '',
            'direccion' => '',
            'email' => '',
            'estado' => 1,
        );
    }

}